/*
 * GameSpriteTest.h
 *
 *  Created on: 17.01.2009
 *      Author: bfriedrich
 */

#ifndef _GAME_SPRITE_TEST_HPP_
#define _GAME_SPRITE_TEST_HPP_

#include <cppunit/TestFixture.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/BriefTestProgressListener.h>
#include <iostream>
#include "SimpleGameSprite.hpp"


class GameSpriteTest: public CppUnit::TestFixture
{
	/*
	 * Aufbau der TestSuite
	 */
	 CPPUNIT_TEST_SUITE(GameSpriteTest);
	     CPPUNIT_TEST(testConstructor);
	     CPPUNIT_TEST(testMoveLeft);
	     CPPUNIT_TEST(testMoveRight);
	     CPPUNIT_TEST(testMoveUp);
	     CPPUNIT_TEST(testMoveDown);
	     CPPUNIT_TEST(testHit);
	 CPPUNIT_TEST_SUITE_END();

private:
	SimpleGameSprite *sprite; // Muster-Sprite, welches zur Verwendung immer kopiert wird

	/**
	 * Test des Konstruktors der Klasse SimpleGameSprite
	 */
	void testConstructor();

	/**
	 * Test von moveLeft() der Klasse SimpleGameSprite
	 */
	void testMoveLeft();

	/**
	 * Test von moveRight() der Klasse SimpleGameSprite
	 */
	void testMoveRight();

	/**
	 * Test von moveUp() der Klasse SimpleGameSprite
	 */
	void testMoveUp();

	/**
	 * Test von moveDown() der Klasse SimpleGameSprite
	 */
	void testMoveDown();

	/**
	 * Test von hit() der Klasse SimpleGameSprite
	 */
	void testHit();

public:
	/**
	 * Vorbereitung des Testlaufs
	 * Wird einmal zum Start des TestFixture aufgerufen.
	 */
	virtual void setUp();

	/**
	 * Nachbereitung des Testlaufs
	 * Wird einmal zum Ende des TestFixture aufgerufen.
	 */
	virtual void tearDown();

	/**
	 * Testlauf zu TestFixture starten.
	 */
	bool run();
};

#endif /* _GAME_SPRITE_TEST_HPP_ */
